#ifndef HITSZ_DIP_PRACTICUM_PARAM_H
#define HITSZ_DIP_PRACTICUM_PARAM_H

#include <vector>
#include <opencv2/opencv.hpp>
#include <Eigen/Dense>

class Param
{
    public:
        static void loadParam(const std::string &yaml_path);
        static void print_debug_string();

    public:
        static cv::Mat BASE2CAM;//base_link 到相机坐标系的齐次变换矩阵
        static cv::Mat KK;//相机内参
        static cv::Mat DISTORT;//相机畸变矩阵

        static bool ENABLE_DEBUG;//是否开启debug

        //行人检测相关
        static std::string DETECT_MODEL_LOCATION;//行人检测模型路径
        static std::string SOT_MODEL_LOCATION;//SOT模型路径


        //圆柱相关
        static Eigen::Vector2f LEFT_COLUMN_COORDS;//左侧圆柱坐标
        static int LC_H_MIN;//HSV H最小值
        static int LC_H_MAX;//HSV H最大值
        static int LC_S_MIN;//HSV V最小值
        static int LC_S_MAX;//HSV V最大值
        static int LC_V_MIN;//HSV V最小值
        static int LC_V_MAX;//HSV V最大值

        static Eigen::Vector2f RIGHT_COLUMN_COORDS;//左侧圆柱坐标
        static int RC_H_MIN;//HSV H最小值
        static int RC_H_MAX;//HSV H最大值
        static int RC_S_MIN;//HSV V最小值
        static int RC_S_MAX;//HSV V最大值
        static int RC_V_MIN;//HSV V最小值
        static int RC_V_MAX;//HSV V最大值

        //定位相关
        static cv::Mat COORDS_MEASURE_COV;//坐标测量噪声协方差
        static cv::Mat COORDS_MODEL_COV;//坐标模型噪声协方差
        static cv::Mat YAW_MODEL_COV;//yaw模型噪声协方差
        static cv::Mat YAW_MEASURE_COV;//yaw测量噪声协方差
    };
#endif